Rails でメソッドを移譲したいときに使う delegate メソッド
メソッドを移譲したいときに使うものという認識
prefix: true
これ知らなかった
つけることで、classroom_nameとか移譲元のモデル名(この場合はclassroom)をprefixでつけられる
delegate :size, to: :attachment, prefix: :avatar
カスタマイズもできる。この書き方だと avatar_sizeになる(prefix: true だと attachment_sizeになるはず)
Railsガイド内この翻訳がちょっと気になる
:prefixオプションがtrueの場合、一般性が低下します (以下を参照)。
「一般性」は「汎用姓」でも良くないか?と思うけどもうちょっとピンとくる表現が思いつきそうで思いつかない
原文は If the :prefix option is true this is less generic, see below.
委譲されたメソッドはデフォルトでpublicになりますが、private: trueを渡すことで変更できます。
デフォルトは public だけど private メソッドとして定義できる
定義箇所
code:ruby
def delegate(*methods, to: nil, prefix: nil, allow_nil: nil, private: nil)
*methodsは移譲したいメソッド名を扱う可変長引数にみえる
to, prefix, allow_nil,privateが引数として定義されている